function* helloWorldGenerator() {
    yield 'hello';
    yield 'world';
    return 'ending';
}

var hw = helloWorldGenerator();
//value表示遍历的值，done 为 false表示还没有遍历完成
/* console.dir(hw.next()); //{ value: 'hello', done: false } 
console.dir(hw.next()); //{ value: 'world', done: false }
console.dir(hw.next()); //{ value: 'ending', done: true }
console.dir(hw.next()); //{ value: undefined, done: true } */

// function* fn() {
//     console.log(`执行了`);
// }
// var f = fn();
// setTimeout(() => {
//     f.next();
// }, 2000);

var arr = [1, [
        [2, 3], 4
    ],
    [5, 6]
];

// var flat = function* (a) {
//     a.forEach(item => {
//         if (typeof item !== 'number') {
//             yield* flat(item);
//         } else {
//             yield item
//         }
//     });
// }

var flat = function* (a) {
    var length = a.length;
    for (var i = 0; i < length; i++) {
        var item = a[i];
        if (typeof item !== 'number') {
            yield* flat(item);
        } else {
            yield item;
        }
    }
};

for (const f of flat(arr)) {
    console.log(f);
}